There are many types of computing devices capable of generating or handling a document in an electronic form. For purposes of this application, such devices are generally referred to herein as xe2x80x9cdocument processing devicesxe2x80x9d. Examples of document processing devices include personal computers, printers, print servers, facsimile machines, digital cameras, digital copiers, optical scanners, medical imaging devices, satellite imaging devices and scientific data collection devices.
A typical printing system includes a document processing device (such as a personal computer) and a printer connected over a communication link. The document processing device including a software application (e.g., a word processing application) and a print driver. In order to generate a document in an electronic form, a user provides input (via some sort of user input device) to the software application (executing on the document processing device). To print the document, the user inputs a print request to the application. The application responds to this input by causing a series of commands describing the document to be transmitted to the print driver. For purposes of this application, the commands transmitted to the print driver may be referred to herein as xe2x80x9cdevice driver interfacexe2x80x9d (DDI) commands or alternatively as the DDI command stream. The data used to represent a DDI command may be referred to herein as DDI command data.
It is often the case that a user has a need to print multiple collated copies of a document. Many of the printing systems that exist today provide a user with the ability to use one of two techniques to satisfy this need. First, the user can cause the document processing device to generate multiple print jobs, each print job describing only a single copy of the document. The print jobs (as they are generated) are transmitted sequentially over a communication link to a printer, thereby causing the printer to print the desired number of copies.
Unfortunately, this first technique can result in a large amount of data having to be processed (both by the document processing device and by the printer) and a large amount of print data having to be transmitted over the communication link. As a result, this first technique can result in printing delays and data transfer bandwidth problems. In addition, documents copies from other print jobs may be interspersed within the copies.
In a second technique, a user causes the document processing device to generate a single print job describing a single copy of the document. The print job is then transmitted once to the printer for printing. After the single copy is printed, the user then retrieves it from the printer and makes use of a photocopier to generate the additional copies desired. Unfortunately, this second technique typically requires the purchase, operation and maintenance of a photocopier. This represents an added expense beyond that of owning and maintaining a printer. Furthermore, user productivity is also reduced as the user must transport the original printed copy to the photocopier and must also spend time operating the photocopier. Also, the quality of the copies generated from a photocopier will typically be below that of the original document printed from the printer.
To solve the problems mentioned above, printing systems have been developed that allow for multiple copies of a document to be printed from a single transmission of a print job. The print job including a single command (indicating the number of copies that are to be printed) followed by print data (describing a single copy of the document). Printers that are able to receive this type of print job are described in the patent entitled MULTIPLE ORIGINAL COPY DATA PRINTER, having U.S. Pat. No. 5,764,863. The technology described in that patent may be referred to as xe2x80x9cTOPAZxe2x80x9d. TOPAZ is an acronym for xe2x80x9ctransmit once, print a zillionxe2x80x9d. Prior art printers incorporating the TOPAZ technology are able to accept print jobs that include print data describing a single copy of a document and a command, referred to herein as a xe2x80x9ccopy_countxe2x80x9d command. The copy_count command indicates to the printer the number (referred to herein as the copy count value) of printed copies of the document desired.
For purposes of this discussion, a print job that includes a command indicating the number of times the print data in the print job is to be printed is referred to herein as a xe2x80x9cmopy print jobxe2x80x9d (mopy is an acronym for xe2x80x9cmultiple original printsxe2x80x9d). A printer able to receive a mopy print job may be referred to herein as a xe2x80x9cmopy printerxe2x80x9d. A print driver that is able to generate a mopy print job may be referred to herein as a xe2x80x9cmopy print driverxe2x80x9d.
As is known in the art, prior art mopy print jobs typically include setup commands that preface the print data. These setup commands may be expressed, for example, in Printer Job Language (PJL). PJL is a command language developed by the Hewlett Packard company.
For purposes of this application, the set of commands that preface the print data in a print job is referred to herein as the xe2x80x9cpreamble sectionxe2x80x9d of the print job. Any commands that occur after the print data is referred to as the xe2x80x9ctrailer sectionxe2x80x9d of the print job. It is known in the art that prior art mopy printers require the copy_count command to be in the preamble section of the print job.
In order for a prior art mopy print driver to properly generate a mopy print job, it must receive a suitable set of DDI commands. For ease of discussion, such a set of DDI commands is referred to herein as a xe2x80x9cmopy enabledxe2x80x9d set of DDI commands. Typically, a mopy enabled set of DDI commands will include an indication of the number of copies that are to be printed. In addition, a mopy enabled set of DDI commands includes DDI commands that describe only a single copy of the document and DDI commands describing any desired finishing information (e.g., a DDI command indicating each copy is to be stapled). A mopy print driver receives these commands and generates the mopy print job. The mopy print job having a command indicating the number of copies that are to be printed, additional commands indicating finishing information and print data describing only a single copy of the document.
Unfortunately, some applications (referred to herein as xe2x80x9cnon-mopy applicationsxe2x80x9d) are not designed to generate a mopy enabled set of DDI commands. To illustrate the problems a non-mopy application can cause, consider the DDI commands listed in Table 1. The DDI commands in table 1 provide an example of a DDI command stream provided to a mopy print driver from a non-mopy application. In this example, it is assumed that the document being converted into a print job is a two page document and that a user has requested (via input to the non-mopy application) two printed collated copies of the document.
It can be seen that the DDI commands listed in Table 1 describe two collated copies of the two page document. Unfortunately, however, the commands describing each copy of the document are in an xe2x80x9cundifferentiated formxe2x80x9d. That is to say, there is no indication where the first set of DDI commands describing the first copy ends and the next set of DDI commands describing the second copy begins. Furthermore, there is no indication that more than one copy of the document is to be printed.
For purposes of this application, a command stream (expressed in any language) that describes multiple collated copies of a document is referred to herein as an xe2x80x9cundifferentiated command streamxe2x80x9d. In addition, each set of commands in the command stream that describes a single copy of a document is referred to herein as a xe2x80x9csingle copy command setxe2x80x9d. Thus, the command stream illustrated in Table 1 is an example of an undifferentiated DDI command stream.
Upon receiving the undifferentiated DDI command stream illustrated in Table 1, a typical prior art mopy print driver generates a single print job. The print job includes a command indicating one copy is to be printed followed by print data describing two copies of the document. The print job is then transmitted to the printer for printing. As a result, roughly twice as much print data is transmitted to the printer than that required to describe the document. As indicated above, this can cause data transfer bandwidth problems and printing delays. Of course this problem gets worse as the number of copies the user requests to be printed increases.
In addition, certain finishing operations that require knowledge of copy boundaries may be applied incorrectly during the printing operation. For example, if the DDI commands listed in table 1 further described a stapling operation, the resulting print job may cause the printer to generate two printed copies of the document with all four of the pages stapled together.
In one embodiment of the present invention, a method of generating a print job from a command stream describing a plurality of copies of a document is provided. The method includes identifying a first set of marking data for a page represented in the command stream; using the marking data to identify a single set of commands in the command stream that describes the document; and using the single set of commands to generate the print job. The print job includes print data that describes only a single copy of the document and a command indicating the number of copies of the document that are to be printed.
In another embodiment, a document processing device is provided. The document processing device is for generating a print job from a command stream describing multiple copies of a document. The document processing device includes: means for identifying a first set of marking data for a page represented in the command stream; means for using the marking data to identify a single set of commands in the command stream, the single set of commands describing the document; and means for using the single set of commands to generate the print job.
In yet another embodiment, a computer-readable medium is provided. The computer readable medium having computer-executable instructions for performing steps to generate a print job from a command stream describing a plurality of copies of a document. The steps include: identifying marking data for a page in the document; using the marking data to identify a single set of commands in the command stream describing the document; and using the single set of commands to generate the print job.
In yet another embodiment, a document processing device is provided that comprises print job receiver. The print job includes print data that describes a plurality of copies of a document. The document processing device further includes means for identifying marking data for a page represented in the print data and also means for using the marking data to identify a first portion of the print data describing a single copy of the document.